package com.zlm.Stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.stream.Stream;

/**
 * @author 13026
 */
public class Stream_get_demo {
    /*
     * Stream流
     *   获取方式
     *       单列集合 default Stream<E> stream()                    Collection中的默认方法
     *       双列集合 无                                            无法直接使用Stream流
     *       数组     public static <T> Stream<T> stream(T[] array) Arrays工具类中静态方法
     *       零散数据 public static <T> Stream<T> of(T...values)    Stream接口中静态方法
     * */
    public static void main(String[] args) {
        // 1.单列集合获取Stream流
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "a", "b", "c");
        System.out.println(list);
        // 得到一条Stream流（流水线），并把数据放上去
        Stream<String> stream = list.stream();
        stream.forEach(System.out::println);

        // 2.双列集合获取Stream流
        HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
        stringIntegerHashMap.put("aaa", 111);
        stringIntegerHashMap.put("bbb", 222);
        stringIntegerHashMap.put("ccc", 333);
        stringIntegerHashMap.keySet().stream().forEach(System.out::println);
        stringIntegerHashMap.entrySet().stream().forEach(System.out::println);

        // 3.数组获取Stream流
        String[] nameList = new String[]{"zlm", "dyq"};
        Arrays.stream(nameList).forEach(System.out::println);

        // 4.零散数据获取Stream流
        // 数组必须是引用类型，如果传递基本类型，会把整个数组当作一个元素，放到Stream流中
        Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
        integerStream.forEach(System.out::println);
    }
}
